The International Business Machine Corporation's (IBM) interactive problem control system (IPCS) is a tool provided with the IBM Multiple Virtual Space (MVS), OS/390, and z/OS memory operating systems to aid in diagnosing software failures. IPCS provides formatting and analysis support for memory dumps and traces produced by the operating system, other program products, and applications that run on the operating systems. A dump occurs during an abnormal end of a program or ABEND. If such a system error occurs, data in memory is written to disk storage, for example, dumped. IPCS is used to format and analyze unformatted dumps. When unformatted dump data sets are submitted, IPCS simulates dynamic address translation (DAT) and other storage management functions to recreate the system environment at the time of the dump. IPCS reads the unformatted dump data and translates it into words. For example, IPCS can identify jobs with error return codes, resource contention in the system, and control block overlays.
To utilize IPCS, a system administrator must enter a series of specialized commands to perform dump and trace analysis, such as analyze, format, view, retrieve, and copy dump and trace data, and to maintain an IPCS session. Details of the IPCS program are described in the IBM publication “OS/390 MVS Interactive Problem Control System (IPCS) User's Guide,” IBM document no. GC28-1756-00 (IBM Copyright 1996), which is incorporated herein by reference in its entirety.
The documented mechanism for creating user-written, non-system-programmer-installed analysis routines for expanding the functionality of IPCS is to invoke the time share option (TSO) variable storage subcommands supplied with IPCS, such as the “EVAL” and “EVALSYM” subcommands. TSO command list (CLISTS) or restructured extended executor (REXX) executables (EXECS) are the programming language environments in which those supplied IPCS subcommands are written. However, neither of those languages is particularly suited for accessing the variety of data types supported in live memory of an IBM mainframe. Due to the limitations of TSO CLISTS and REXX, it is a cumbersome task to construct a user-developed TSO CLIST or REXX EXEC to run through a control block chain in live memory, and then to provide a complex analysis of the memory's state. If written, future support of such a user-developed CLIST or EXEC is problematical.
Native mainframe Assembly and PL/X languages represent a much more suitable common programming platform to examine data in a memory dump and to carry out a complicated analysis task on live memory. However, the IBM supplied subcommands such as EVAL and EVALSYM, do not lend themselves to direct invocation either from mainframe Assembly, PL/X, or other third generation language environments.
IBM, various other equipment manufacturers(OEM), computer users, software developers, and the like develop and distribute an assortment of TSO live-memory analysis commands also referred to as native TSO commands. Many of the TSO live-memory analysis commands that already exist perform functions which are similar to existing IPCS commands. Other existing TSO live-memory analysis commands perform analyses that would be useful for problem resolution, if they could be directed at the memory represented by a memory dump. The TSO live-memory analysis commands currently examine live mainframe memory to locate a control block structure, and then perform analysis of the state of a user-defined or system structure found in live mainframe memory. Since the existing catalog of TSO live-memory commands may not easily be converted into IPCS commands, the existing TSO live-memory commands may not be easily leveraged into reading and analyzing a memory dump. In addition, the majority of TSO live-memory commands are written in mainframe Assembly or PL/X which, as mentioned above, IPCS does not support. It should be noted that the term “live memory” as used herein is memory in a computer system which is currently allocated for use by a process running on the computer system.